#ifndef _SW_INTERRUPT_H_
#define _SW_INTERRUPT_H_

#include "types.h"


typedef enum {
    SW_INT_EXIT_PROCESS = 1,
    SW_INT_EXEC_PROCESS,
    SW_INT_SEMAPHORE_LOCK,
    SW_INT_SEMAPHORE_UNLOCK,
    SW_INT_SEMAPHORE_TRYLOCK,
    SW_INT_WAIT_QUEUE,
    SW_INT_CREATE_QUEUE,
    SW_INT_DELETE_QUEUE,
    SW_INT_ENQ_QUEUE,
    SW_INT_DUMMY_INTERRUPT,
    SW_INT_TIMER_START,
    SW_INT_EMAC_CFG,
    SW_INT_QUEUE_LOOKUP,
    SW_INT_DEVICE_OPEN,
    SW_INT_DEVICE_CLOSE,
    SW_INT_DEVICE_POST,
    SW_INT_TIMER_CANCEL,
    SW_INT_RESET_PROCESSOR,
    /*
    * WARNING!! Any additions here require
    * further instructions in _raise_sw_interrupt
    * in sw_interrupt.s
    */

    MAX_SW_INTERRUPTS,
}sw_int_t;

bool raise_sw_interrupt(sw_int_t num, uint32_t data);

#endif
